<html>

<head>
    <title>什么是继承？</title>
</head>

<body>
    <table width=100%>
        <tr>
            <td align=left>
                <a href="class.html"><img src=../../images/PreviousArrow.gif width=26 height=26 align=bottom border=0
                        alt="Previous | "></a><a href="bibliography.html"><img src=../../images/NextArrow.gif width=26
                        height=26 align=bottom border=0 alt="Next | "></a><a href="../../index.html"><img
                        src=../../images/WayUpArrow.gif width=26 height=26 align=bottom border=0
                        alt="Trail Map | "></a><a href="../index.html"><img src=../../images/javaHeader.gif width=26
                        height=26 align=bottom border=0 alt="Writing Java Programs | "></a>
            <td>
            <td align=right>
                <a href="index.html"><strong><em>面向对象编程概念：入门</em></strong></a>
            </td>
        </tr>
    </table>
    <p>
        <hr size=4>

    <h2>
        什么是继承？
    </h2>
    <p>
    <blockquote>
        一般来说，对象是按照类来定义的。通过了解对象的类，您可以对其了解很多。即使你不知道一分钱是什么，如果我告诉你这是一辆自行车，你也会知道它有两个轮子、把手和踏板。
        <p>
            面向对象的系统更进一步，允许根据其他类定义类。例如，山地自行车、竞速自行车和双人自行车都是不同种类的自行车。在面向对象的术语中，山地自行车、竞速自行车和双人自行车都是自行车类的<em>子类</em>。类似地，自行车类是山地自行车、竞速自行车和双人自行车的<em>超类</em>。
        <p>
            <center><img src="images/bikeinheritance.trans.gif" width=399 height=316></center>
        <p>
            每个子类从超类<em>继承</em>状态（以变量声明的形式）。山地自行车、竞速自行车和双人自行车共享一些状态：脚踏板的转速、移动速度等。此外，每个子类都从超类继承方法。山地自行车、竞速自行车和双人自行车有一些共同的行为：刹车和改变脚踏板的速度。
        <p>
            然而，子类不限于其超类提供给它们的状态和行为。（怎么理解这句话呢？）子类可以向从超类继承的变量和方法添加变量和方法。比如双人自行车有两个座椅和两套把手；一些山地自行车有一组额外的装置用以实现更加精细的档位控制。
        <p>
            子类还可以<em>重写</em>继承的方法，并为这些方法提供专门的实现。例如，如果你有一辆带有额外档位的山地自行车，你可以重写“换挡”方法，这样骑车人就可以实际使用这些新的档位。
        <p>
            您不仅限于一层继承——继承树或<em>类层次结构</em>可以根据需要进行深入。方法和变量通过级别向下继承。类在层次结构中出现得越低，其行为就越专业。
        <h4>继承的好处</h4>
        <ul>

            <li>
                子类根据超类提供的公共元素提供专门的行为。通过使用继承，程序员可以多次重用超类中的代码。
            <li>
                程序员可以实现定义“通用”行为的超类（称为<em>抽象类</em>）。超类的本质是定义的，可以部分实现，但大部分类未定义和未实现。其他程序员用专门的子类来填充细节。
        </ul>

    </blockquote>
    <p>
        <hr size=4>
    <p>
    <table width=100%>
        <tr>
            <td align=left>
                <a href="class.html"><img src=../../images/PreviousArrow.gif width=26 height=26 align=top border=0
                        alt="Previous | "></a><a href="bibliography.html"><img src=../../images/NextArrow.gif width=26
                        height=26 align=top border=0 alt="Next | "></a><a href="../../index.html"><img
                        src=../../images/WayUpArrow.gif width=26 height=26 align=top border=0 alt="Trail Map | "></a><a
                    href="../index.html"><img src=../../images/javaHeader.gif width=26 height=26 align=top border=0
                        alt="Writing Java Programs | "></a>
            <td>
            <td align=right>
                <a href="TOC.html"><strong><em>目录</em></strong></a>
            </td>
        </tr>
    </table>
</body>

</html>